package org.main;

import junit.framework.TestSuite;

import org.jheuristics.DefaultIndividualTest;
import org.jheuristics.ga.DefaultEvolverTest;
import org.jheuristics.ga.DefaultGAConfigTest;
import org.jheuristics.ga.DefaultGAStatusTest;
import org.jheuristics.ga.DefaultIndividualsFactoryTest;
import org.jheuristics.ga.DefaultPopulationTest;
import org.jheuristics.ga.SimpleBulkFitnessEvaluatorTest;
import org.jheuristics.ga.UnmodifiablePopulationTest;
import org.jheuristics.ga.multiObjective.BulkMultiObjetiveFitnessEvaluatorTest;
import org.jheuristics.ga.multiObjective.DefaultMultiObjetiveFitnessTest;
import org.jheuristics.ga.multiObjective.EuclidianDistanceAlgorithmTest;
import org.jheuristics.ga.operators.CompositeOperatorTest;
import org.jheuristics.ga.operators.IndividualsEvaluationOperatorTest;
import org.jheuristics.ga.operators.IndividualsInsertionOperatorTest;
import org.jheuristics.ga.operators.RandomizedIndividualsCreationOperatorTest;
import org.jheuristics.ga.operators.ReproductionOperatorTest;
import org.jheuristics.ga.operators.SelectionClearingOperatorTest;
import org.jheuristics.ga.operators.ShiftOperatorTest;
import org.jheuristics.ga.operators.StatusPopulationChooserTest;
import org.jheuristics.ga.operators.closures.PopulationClearClosureTest;
import org.jheuristics.ga.operators.closures.SetSelectionClosureTest;
import org.jheuristics.ga.operators.probabilities.ConstantProbabilityTest;
import org.jheuristics.ga.operators.rates.ConstantRateTest;
import org.jheuristics.ga.operators.rates.ProportionalRateTest;
import org.jheuristics.ga.operators.reproductors.DefaultMutationTest;
import org.jheuristics.ga.operators.reproductors.DefaultOnePointXOverTest;
import org.jheuristics.ga.operators.reproductors.GensListOnePointXOverTest;
import org.jheuristics.ga.operators.selectors.AllIndividualsSelectorTest;
import org.jheuristics.ga.operators.selectors.BestIndividualsSelectorTest;
import org.jheuristics.ga.operators.selectors.BestMultiObjetiveFitnessSelectorTest;
import org.jheuristics.ga.operators.selectors.DefaultTournamentSelectionTest;
import org.jheuristics.ga.operators.selectors.GroupSelectorTest;
import org.jheuristics.ga.operators.selectors.NonDominatedSelectorTest;
import org.jheuristics.ga.operators.selectors.RandomSelectorTest;
import org.jheuristics.ga.operators.selectors.WeightedSelectorTest;
import org.jheuristics.ga.operators.selectors.WorseIndividualsSelectorTest;
import org.jheuristics.ga.operators.selectors.roulettes.SUSRouletteTest;
import org.jheuristics.ga.scalers.NoScalerTest;
import org.jheuristics.ga.scalers.RawFitnessScalerTest;
import org.jheuristics.ga.scalers.ScalersFactoryTest;
import org.jheuristics.ga.transformations.DoubleFitnessToDoubleTransformationTest;
import org.jheuristics.neighborhood.NeighborhoodUtilsTest;
import org.jheuristics.util.BitStringTest;
import org.jheuristics.util.DefaultRandomGeneratorTest;
import org.jheuristics.util.InvertNaturalOrderComparatorTest;
import org.jheuristics.util.MathUtilsTest;
import org.jheuristics.util.conditions.AllFoundConditionTest;
import org.jheuristics.util.conditions.AndConditionTest;
import org.jheuristics.util.conditions.BestFoundConditionTest;
import org.jheuristics.util.conditions.MaxGenerationConditionTest;
import org.jheuristics.util.conditions.OrConditionTest;
import org.jheuristics.util.conditions.TrueAlwaysConditionTest;
import org.smartpumping.otimizacao.csv.CalculadorSolucaoViavelTest;
import org.smartpumping.otimizacao.replicador.DefaultIndividualReplicatorTest;

public class Main extends TestSuite {

	/**
	   * Assembles a test suite containing all known tests.
	   * As new TestCases are defined they can be easily added 
	   * to this class
	   * @return A non-null test suite.
	   */

	  public static void main(String[] args) {

	    TestSuite suite = new TestSuite();
	    
	    suite.addTest(new TestSuite(BulkMultiObjetiveFitnessEvaluatorTest.class));
	    suite.addTest(new TestSuite(DefaultMultiObjetiveFitnessTest.class));
	    suite.addTest(new TestSuite(EuclidianDistanceAlgorithmTest.class));
	    suite.addTest(new TestSuite(PopulationClearClosureTest.class));
	    suite.addTest(new TestSuite(SetSelectionClosureTest.class));
	    suite.addTest(new TestSuite(ConstantProbabilityTest.class));
	    suite.addTest(new TestSuite(ConstantRateTest.class));
	    suite.addTest(new TestSuite(ProportionalRateTest.class));
	    suite.addTest(new TestSuite(DefaultMutationTest.class));
	    suite.addTest(new TestSuite(DefaultOnePointXOverTest.class));
	    suite.addTest(new TestSuite(GensListOnePointXOverTest.class));
	    suite.addTest(new TestSuite(SUSRouletteTest.class));
	    suite.addTest(new TestSuite(AllIndividualsSelectorTest.class));
	    suite.addTest(new TestSuite(BestIndividualsSelectorTest.class));
	    suite.addTest(new TestSuite(BestMultiObjetiveFitnessSelectorTest.class));
//	    suite.addTest(new TestSuite(CutSelectorTest.class));
//	    suite.addTest(new TestSuite(CutSelectorTest2.class));
	    suite.addTest(new TestSuite(DefaultTournamentSelectionTest.class));
	    suite.addTest(new TestSuite(GroupSelectorTest.class));
	    suite.addTest(new TestSuite(NonDominatedSelectorTest.class));
	    suite.addTest(new TestSuite(RandomSelectorTest.class));
//	    suite.addTest(new TestSuite(StochasticUniversalSampingSelectorTest.class));
//	    suite.addTest(new TestSuite(VarianceSelectorTest.class));
	    suite.addTest(new TestSuite(WeightedSelectorTest.class));
	    suite.addTest(new TestSuite(WorseIndividualsSelectorTest.class));
	    suite.addTest(new TestSuite(CompositeOperatorTest.class));
	    suite.addTest(new TestSuite(IndividualsEvaluationOperatorTest.class));
	    suite.addTest(new TestSuite(IndividualsInsertionOperatorTest.class));
	    suite.addTest(new TestSuite(RandomizedIndividualsCreationOperatorTest.class));
	    suite.addTest(new TestSuite(ReproductionOperatorTest.class));
	    suite.addTest(new TestSuite(SelectionClearingOperatorTest.class));
	    suite.addTest(new TestSuite(ShiftOperatorTest.class));
	    suite.addTest(new TestSuite(StatusPopulationChooserTest.class));
	    
	    suite.addTest(new TestSuite(NoScalerTest.class));
	    suite.addTest(new TestSuite(RawFitnessScalerTest.class));
	    suite.addTest(new TestSuite(ScalersFactoryTest.class));
	    suite.addTest(new TestSuite(DoubleFitnessToDoubleTransformationTest.class));
	    suite.addTest(new TestSuite(DefaultEvolverTest.class));
	    suite.addTest(new TestSuite(DefaultGAConfigTest.class));
	    suite.addTest(new TestSuite(DefaultGAStatusTest.class));
	    suite.addTest(new TestSuite(DefaultIndividualsFactoryTest.class));
	    suite.addTest(new TestSuite(DefaultPopulationTest.class));
	    suite.addTest(new TestSuite(SimpleBulkFitnessEvaluatorTest.class));
	    suite.addTest(new TestSuite(UnmodifiablePopulationTest.class));
	    suite.addTest(new TestSuite(NeighborhoodUtilsTest.class));
	    suite.addTest(new TestSuite(AllFoundConditionTest.class));
	    suite.addTest(new TestSuite(AndConditionTest.class));
	    suite.addTest(new TestSuite(BestFoundConditionTest.class));
	    suite.addTest(new TestSuite(MaxGenerationConditionTest.class));
	    suite.addTest(new TestSuite(OrConditionTest.class));
	    suite.addTest(new TestSuite(TrueAlwaysConditionTest.class));
	    suite.addTest(new TestSuite(BitStringTest.class));
	    suite.addTest(new TestSuite(DefaultRandomGeneratorTest.class));
	    suite.addTest(new TestSuite(InvertNaturalOrderComparatorTest.class));
	    suite.addTest(new TestSuite(MathUtilsTest.class));
	    suite.addTest(new TestSuite(DefaultIndividualTest.class));
	    suite.addTest(new TestSuite(CalculadorSolucaoViavelTest.class));
	    suite.addTest(new TestSuite(DefaultIndividualReplicatorTest.class));
	    
	    junit.textui.TestRunner.run(suite);

	    
	  }
	
}
